package com.rq.shuduapp;

import android.content.Context;
import android.os.Parcelable;

//import com.tencent.mmkv.MMKV;

import java.io.Serializable;
import java.util.Set;

/**
 * 小数据手机本地存储
 */
public class SPUtil {
//    private static MMKV mkv;
    private static String appId;

    public static void setAppId(String c) {
        appId = c;
    }

    public static final String TAG_INNER_PRINTER = "inner.printer.is.usable";

    public static void setInnerPrinter(boolean isOpen) {
//        if (mkv == null) {
//            return;
//        }
//        mkv.putBoolean(TAG_INNER_PRINTER, isOpen);
    }
//
//    /**
//     * @return 设备内置打印可用
//     */
//    public static boolean isInnerPrinterOk() {
//        if (mkv == null) {
//            return false;
//        }
//        return mkv.getBoolean(TAG_INNER_PRINTER, false);
//    }

    private SPUtil() {
    }

    public static SPUtil getInstance() {
        return SingletonHolder.sInstance;
    }  //静态内部类

    private static class SingletonHolder {
        private static final SPUtil sInstance = new SPUtil();
    }

    public static void init(Context context) {
//        MMKV.initialize(context);
//        mkv = MMKV.mmkvWithID("user");
    }
//
//
//    /**
//     * 保存数据的方法，我们需要拿到保存数据的具体类型，然后根据类型调用不同的保存方法
//     *
//     * @param key
//     * @param object
//     */
//    private static void save(String key, Object object) {
//        if (key == null) {
//            return;
//        }
//        if (object == null) {
//            removeKey(key);
//            return;
//        }
//        if (object instanceof String) {
//            mkv.encode(key, (String) object);
//        } else if (object instanceof Integer) {
//            mkv.encode(key, (Integer) object);
//        } else if (object instanceof Boolean) {
//            mkv.encode(key, (Boolean) object);
//        } else if (object instanceof Float) {
//            mkv.encode(key, (Float) object);
//        } else if (object instanceof Long) {
//            mkv.encode(key, (Long) object);
//        } else if (object instanceof Double) {
//            mkv.encode(key, (Double) object);
//        } else if (object instanceof byte[]) {
//            mkv.encode(key, (byte[]) object);
//        } else if (object instanceof Parcelable) {
//            mkv.encode(key, (Parcelable) object);
//        } else {
//            mkv.encode(key, object.toString());
//        }
//    }
//
//    public static void saveSet(String key, Set<String> sets) {
//        mkv.encode(key, sets);
//    }
//
//    public static void saveParcelable(String key, Parcelable obj) {
//        mkv.encode(key, obj);
//    }
//
//    /**
//     * 得到保存数据的方法，我们根据默认值得到保存的数据的具体类型，然后调用相对于的方法获取值
//     *
//     * @param key
//     * @param defaultObject
//     * @return
//     */
//    public static Object getCash(String key, Object defaultObject) {
//        if (defaultObject instanceof String) {
//            return mkv.decodeString(key, (String) defaultObject);
//        } else if (defaultObject instanceof Integer) {
//            return mkv.decodeInt(key, (Integer) defaultObject);
//        } else if (defaultObject instanceof Boolean) {
//            return mkv.decodeBool(key, (Boolean) defaultObject);
//        } else if (defaultObject instanceof Float) {
//            return mkv.decodeFloat(key, (Float) defaultObject);
//        } else if (defaultObject instanceof Long) {
//            return mkv.decodeLong(key, (Long) defaultObject);
//        } else if (defaultObject instanceof Double) {
//            return mkv.decodeDouble(key, (Double) defaultObject);
//        } else if (defaultObject instanceof byte[]) {
//            return mkv.decodeBytes(key, (byte[]) defaultObject);
//        } else if (defaultObject instanceof Serializable) {
//            return mkv.decodeParcelable(key, (Class<? extends Parcelable>) defaultObject);
//        }
//        return defaultObject;
//    }
//
//    /**
//     * 移除某个key对
//     *
//     * @param key
//     */
//    public static void removeKey(String key) {
//        mkv.removeValueForKey(key);
//    }
//
//    /**
//     * 移除多个key对
//     *
//     * @param key
//     */
//    public static void removeKeys(String[] key) {
//        mkv.removeValuesForKeys(key);
//    }
//
//    /**
//     * 获取全部key对
//     */
//    public static String[] getAllKeys() {
//        return mkv.allKeys();
//    }
//
//    /**
//     * 含有某个key
//     *
//     * @param key
//     * @return
//     */
//    public static boolean hasKey(String key) {
//        return mkv.containsKey(key);
//    }
//
//    /**
//     * 含有某个key
//     *
//     * @param key
//     * @return
//     */
//    public static boolean have(String key) {
//        return mkv.contains(key);
//    }
//
//    /**
//     * 清除所有key
//     */
//    public static void clearAll() {
//        mkv.clearAll();
//    }
//
//    /**
//     * 获取操作对象
//     *
//     * @return
//     */
//    public static MMKV getMkv() {
//        return mkv;
//    }
//
//
//    public static String getString(String key) {
//        return (String) getString(key, "");
//    }
//
//
//    public static String getString(String key, String defaultValue) {
//        key = appId + key;
//        return (String) getCash(key, defaultValue);
//    }
//
//    public static void saveString(String key, String value) {
//        key = appId + key;
//        save(key, value);
//    }
//
//    public static void clearStrings(String... key) {
//        removeKeys(key);
//    }
//
//    public static void saveInt(String key, int value) {
//        key = appId + key;
//        save(key, value);
//    }
//
//    public static int getInt(String key) {
//        return (int) getCash(key, -1);
//    }
//
//    public static int getInt(String key, int defaultValue) {
//        key = appId + key;
//        return (int) getCash(key, defaultValue);
//    }
//
//    public static long getLong(String key, long defaultValue) {
//        key = appId + key;
//        return (long) getCash(key, defaultValue);
//    }
//
//
//    public static void setString(String key, String value) {
//        key = appId + key;
//        save(key, value);
//    }
//
//
//    public static void setBoolean(String key, Boolean b) {
//        key = appId + key;
//        save(key, b);
//    }
//
//    public static boolean getBoolean(String key) {
//        key = appId + key;
//        //    return init(context).getBoolean(key, false);
//        return (boolean) getCash(key, false);
//    }
//
//    public static void setLong(String key, Long b) {
//        key = appId + key;
//        save(key, b);
//    }
//
//    public static Long getLong(String key, long... defaultValue) {
//        key = appId + key;
//        long def = 0;
//        if (defaultValue != null && defaultValue.length == 1) {
//            def = defaultValue[0];
//        }
//        return (Long) getCash(key, def);
//    }
//
//
//    //  public static SharedPreferences init(Context context) {
//    //    if (context == null) {
//    //      LOG.e("SPUtil", "ERROR : Line 14");
//    //    }
//    //    SharedPreferences sp = context.getSharedPreferences("user", Context.MODE_PRIVATE);
//    //    return sp;
//    //  }
//    //
//    //  private static Context context;
//    //
//    //  public static void setCxt(Application context) {
//    //    SPUtil.context = context;
//    //  }
//    //
//    //  public static String getString( String key) {
//    //    return init(context).getString(key, "");
//    //  }
//    //
//    //  /**
//    //   * 添加数据
//    //   *
//    //   * @param key
//    //   * @param value
//    //   */
//    //  public static void saveString( String key, String value) {
//    //    SharedPreferences.Editor edit = init(context).edit();
//    //    edit.putString(key, value);
//    //    edit.apply();
//    //  }
//    //
//    //  public static void clearStrings( String... key) {
//    //    if (context != null && key != null && key.length > 0) {
//    //      SharedPreferences.Editor edit = init(context).edit();
//    //      for (String k : key) {
//    //        edit.remove(k);
//    //      }
//    //      edit.apply();
//    //    }
//    //  }
//    //
//    //  public static void saveString(String key, String value) {
//    //    saveString(context, key, value);
//    //  }
//    //
//    //  public static void saveInt(String key, int value) {
//    //    saveInt(context, key, value);
//    //  }
//    //
//    //  public static void saveInt( String key, int value) {
//    //    SharedPreferences.Editor edit = init(context).edit();
//    //    edit.putInt(key, value);
//    //    edit.apply();
//    //  }
//    //
//    //  public static int getInt( String key, int defaultValue) {
//    //    return init(context).getInt(key, defaultValue);
//    //  }
//    //
//    //  public static int getInt( String key) {
//    //    return init(context).getInt(key, -1);
//    //  }
//    //
//    //  public static void setString(Context welcomeActivity, String key, String value) {
//    //    SharedPreferences.Editor edit = init(welcomeActivity).edit();
//    //    edit.putString(key, value);
//    //    edit.apply();
//    //  }
//    //
//    //  public static String getString(String key) {
//    //    return init(context).getString(key, "");
//    //  }
//    //
//    //
//    //  public static void setBoolean( String key, Boolean b) {
//    //    SharedPreferences.Editor edit = init(context).edit();
//    //    edit.putBoolean(key, b);
//    //    edit.apply();
//    //  }
//    //
//    //  public static boolean getBoolean( String key) {
//    //    return init(context).getBoolean(key, false);
//    //  }
//    //
//    //  public static void setLong( String key, Long b) {
//    //    SharedPreferences.Editor edit = init(context).edit();
//    //    edit.putLong(key, b);
//    //    edit.apply();
//    //  }
//    //
//    //  public static Long getLong( String key, long defaultValue) {
//    //    return init(context).getLong(key, defaultValue);
//    //  }
//    //
//    //  public static Long getLong( String key) {
//    //    return init(context).getLong(key, 0L);
//    //  }

}
